//
//  QSLanguageTool.swift
//  TestSwift
//
//  Created by Song on 2018/6/26.
//  Copyright © 2018年 Song. All rights reserved.
//

import UIKit

///系统语言
let kLangeuage = "langeuage"

/// 系统语言类型（其他的语言类型可以重系统设置中设置，然后打印出来看看）
///
/// - zh_hans: 简体
/// - zh_hans_cn: 简体老写法
/// - zh_hant: 繁体（台湾）
/// - en: 英文（不同地区的英文版本有区别，但都以en开头）
enum QSLangeuageType: String {
    case zh_hans = "zh-Hans"
    case zh_hans_cn = "zh-Hans-CN"
    case zh_hant = "zh-Hant"
    case en = "en"
}

class QSLanguageTool: NSObject {
    // 单例
    static let shareInstance = QSLanguageTool()
    
    let def = UserDefaults.standard
    var bundle : Bundle?
    
    /// 获取当前系统语言类型
    func qs_getSystemCurrentLanguageType() ->String {
        var language = def.object(forKey: kLangeuage) as? String
        // 本地无存储
        if language == "" || language == nil {
            // 获取系统首选语言顺序
            let languages:[String] = def.object(forKey: "AppleLanguages") as! [String]
            let lang:String = languages[0]
            language = lang
        }
        return language!
    }
    
    /// 设置语言
    func qs_setLanguage(_ langeuage: String) {
        //语言设置
        def.set(langeuage, forKey: kLangeuage)
        def.synchronize()
        //根据str获取语言数据（因为设置了本地化，所以项目中有en.lproj和zn-Hans.lproj）
        let path = Bundle.main.path(forResource:langeuage , ofType: "lproj")
        bundle = Bundle(path: path!)
    }
    
    /// 根据文件中的key获取字符串
    class func qs_getString(key: String) -> String {
        if let bundel = QSLanguageTool.shareInstance.bundle {
            let str = NSLocalizedString(key, tableName: "Localizable", bundle: bundel, value: "default", comment: "default")
            return str
        }
        
        let str = NSLocalizedString(key, comment: "default")
        return str
    }
}
